/*
 * Copyright (c) 2024 Black Sesame Technologies
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 * http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

#include "dal_fastdds/converter/GuidConverter.hpp"

GuidConverter* GuidConverter::singleton_ = nullptr;

GuidConverter::GuidConverter() {}

GuidConverter* GuidConverter::GetInstance()
{
    if (singleton_ == nullptr) {
        singleton_ = new GuidConverter();
    }
    return singleton_;
}

void GuidConverter::ConvertGuidFromFastddsToDal(const GUID_t* f_guid, dal_guid_t* d_guid)
{
    memcpy(d_guid->guidprefix.value, f_guid->guidPrefix.value, GUIDPREFIX_SIZE);
    memcpy(d_guid->entity_id.value, f_guid->entityId.value, ENTITYID_SIZE);
}

void GuidConverter::ConvertGuidFromDalToFastdds(dal_guid_t* d_guid, GUID_t* f_guid)
{
    memcpy(f_guid->guidPrefix.value, d_guid->guidprefix.value, GUIDPREFIX_SIZE);
    memcpy(f_guid->entityId.value, d_guid->entity_id.value, ENTITYID_SIZE);
}
